Middleware (also known as a middleware layer) is traditionally a class of computer software that provides services to software applications beyond those services available from an operating system. Commonly, a middleware layer enables communication and management of data in distributed applications.
Traditional middleware is designed to run in resource rich environments, such as on servers and personal computers. However, traditional middleware is not generally compatible with resource constrained devices such as mobile phones, personal digital assistants (PDAs), tablet computers, and so forth. Additionally, traditional middleware is not generally available in embedded systems. Accordingly, enterprise class services such as security, high performance messaging, transactions, and so on are not traditionally made available on resource constrained devices or embedded systems.